Address edge case for stale PSCI CPU data in cache
authorDavid Cunado <david.cunado@arm.com>
Wed, 19 Jul 2017 11:14:07 +0000 (12:14 +0100)
committerDavid Cunado <david.cunado@arm.com>
Wed, 26 Jul 2017 10:59:00 +0000 (11:59 +0100)
commit71341d23668b1700cd50c0abd74073e4351acbd9
treeed5c313c132d0769b12c30332bc16e528ebe59f0
parentaa965e1583349b36ce7edd2b3fe9f1f461ef8b23
Address edge case for stale PSCI CPU data in cache

There is a theoretical edge case during CPU_ON where the cache
may contain stale data for the target CPU data - this can occur
under the following conditions:

- the target CPU is in another cluster from the current
- the target CPU was the last CPU to shutdown on its cluster
- the cluster was removed from coherency as part of the CPU shutdown

In this case the cache maintenace that was performed as part of the
target CPUs shutdown was not seen by the current CPU's cluster. And
so the cache may contain stale data for the target CPU.

This patch adds a cache maintenance operation (flush) for the
cache-line containing the target CPU data - this ensures that the
target CPU data is read from main memory.

Change-Id: If8cfd42639b03174f60669429b7f7a757027d0fb
Signed-off-by: David Cunado <david.cunado@arm.com>
lib/psci/psci_on.c